Functions in two separate binaries may match syntactically and/or semantically. Discovering whether functions in binaries match has various applications. Example applications include code plagiarism identification and test prioritization. In the case of test prioritization, if two functions (e.g., an old version and a new version) are very closely matched, then fewer test cases may be needed in order to test the new version of the function. The test cases may be targeted at the differential code of the new version with respect to the old version.